iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Security

一個人的藍隊系列 第 28

Compliance as Code 入門:利用 Inspec 進行合規檢查

  • 分享至 

  • xImage
  •  

Complance as Code

前一個章節我們介紹完利用 Iac (Infrastructure as Code,基礎設施即代碼)進行自動化的設定。

今天來分享 Compliance as Code,中文是合規即代碼,有的人也會簡稱為 CaC。

很多組織都會受到稽核/合規的要求,無論是來自於政府法規、行業標準,還是內部的安全政策。這些合規性要求不僅是確保組織運作的一個重要環節,也是保障數據安全和客戶信任的關鍵因素。

然而,面對快速變化的數位環境和不斷增長的合規性挑戰,傳統的手動合規性檢查和配置方法已經顯得不再足夠。在這種情況下,Compliance as Code(合規性即程式碼)嶄新地站在舞台中央,成為組織實現自動化合規性的重要工具。

Compliance as Code 的核心概念是將合規性要求轉化為可執行的程式碼,通過自動化來確保系統和應用程式在技術層面上符合相關的法規、標準和內部政策。這意味著合規性標準不再僅僅是一份文件,而是被實際地轉化為能夠自動執行的腳本、模板或配置。

這種自動化的方式不僅可以確保合規性的達成,還能夠為組織帶來一系列的好處。可以說是藍隊跟內部稽核的一大福音。

順道一提,Compliance as Code 也可以融入軟體安全開發的生命週期內,透過 Compliance as Code整合 DevOps 或 CI/CD 來達成持續合規。

Compliance as code 是一個相對新興的概念,隨著一些規範和法規對於數據隱私和安全的要求不斷提高,越來越多的技術、工具和平台出現在市場上。

但因為相對來說是比較新的概念,各家針對Compliance as code的說法與實作可能會有些微差異,也有許多 IaC 或 Policy as Code 被直接當成 Compliance as code 的作法,也有一些技術是本身可能就涵蓋多項的。

這邊我覺得,一個重點想法就是合規,如同其名,核心精神在於合規,組織想要符合或是遵守一些規範例,如 PCI-DSS、HIPAA、GDPR、 GedRAMP,資通安全法或是內部政策規範。透過 Compliance as Code 帶來了自動化和一致性,自動檢查配置,去檢查和確保組織的系統和應用程式始終符合合規性要求,保持一致的合規性標準。

快速響應是 Compliance as Code 的另一個關鍵好處。隨著合規性要求的變化和更新,組織可以迅速地更新相關的程式碼,確保系統在最短的時間內就能適應新的合規性要求,從而減少違規風險。

此外,Compliance as Code 還有助於減少風險。自動檢查合規性可以幫助組織及早識別可能的合規性違規問題,並採取適當的措施加以修復,從而降低遭受合規性違規的潛在風險。

在實作上要進行設定修補當然是沒問題,技術上都做得到,這邊只是補充一下,談到名詞定義的時候大家可能看法會有一些出入。Compliance as Code 其實你可以做到預防型、偵測型、修補型。

預防型就是我設定了某個服務的設定之後,其他人無法去更改。偵測型就是我們待會的範例,會去檢察系統上的設定是否符合我們的描述性語言。修補型就是透過自動或半自動去修補不符合規範的設定。通常談到 Compliance as Code,多數還是著墨於偵測型,但另外兩者也是有的。

在目前 DevOps 發展時代,組織需要不斷尋求創新的方式來應對合規性挑戰,Compliance as Code無疑是一個引人注目的方向,它在保障安全的同時也為組織帶來了更多的靈活性和效率。

Chef InSepc 實作 Complance as Code

講完理論,接下來是技術實作的部分
這邊選用的是 Chef InSepc
我認為是一個很典型標準的 Complance as Code 的工具
並且官方網站也是大大的打著 CaC 的口號 XD
相較之下有些其他工具,可能也會網路文章、書籍、研討會,作為分享說是 Complance as Code 的工具或服務,但它自己官方本身可能是有其他名稱。
https://community.chef.io/tools/chef-inspec

https://ithelp.ithome.com.tw/upload/images/20231013/201141108LxcgRVjpJ.png

Chef InSepc 目前網路上教學資源不少,官方也有提供文件
https://github.com/inspec/inspec
https://docs.chef.io/inspec/
安裝上很方便

wget https://packages.chef.io/files/stable/inspec/4.37.8/ubuntu/18.04/inspec_4.37.8-1_amd64.deb
dpkg -i inspec_4.37.8-1_amd64.deb
inspec --help

安裝完成後我們可以透過 inspec 的指令直接對目標進行合規的檢查
至於要檢查甚麼項目,利用 exec 可以調用遠端 Github 的 reference
以下指令我是使用 linux-baseline 這個檢查規則
然後用 ssh 方式連線去檢查,所以要記得先配置好 ssh key
chef license accept 是表示你接受授權許可而已

inspec exec https://github.com/dev-sec/linux-baseline -t ssh://wazuh@192.168.101.141 -i ~/.ssh/id_rsa --chef-license accept

剛剛提到的一些合規標準Chef也有提供文件
例如我們想做到 PCIDSS 合規
可以參考以下
《Chef PCI DSS Compliance Guide》
https://www.chef.io/docs/cheflibraries/whitepapers/guidetopcidsscompliance.pdf

要使用 Chef InSpec 其實就要了解一下 Profile

Chef InSpec 支持創建複雜的測試和合規性配置文件,這些配置文件組織控件以支持依賴性管理和代碼重用。每個配置文件都是一個獨立的結構,具有自己的分發和執行流程。這個就是Profile

我們上面執行使用 exec 其實也是去抓 Github 上面的 Profile
所以也可以將 Profile 建立於本地端,然後指定位置去執行

examples/profile
├── README.md
├── controls
│   ├── example.rb
│   └── control_etc.rb
├── libraries
│   └── extension.rb
|── files
│   └── extras.conf
└── inspec.yml

Profile 中的 libraries 是可以使用已經寫好的資源擴充
官方有提供了非常多的資源!
https://docs.chef.io/inspec/resources/

這系列文章接近尾聲
這篇文章提到了一些合規的項目包含了 PCI-DSS、HIPAA、GDPR、 GedRAMP
大家有沒有覺得很熟悉?你是忘記了,還是不敢想起來
我們當初安裝跟使用 Wazuh 的時候,在 dashboard 的地方也會有看到合規性檢查的項目唷
大家可以回憶看看,或是回去玩看看就會注意到了

這幾天過於忙碌,沒辦法好好更充實今天內容有點可惜 QQ
上面的實作,應該是不會有問題
但我目前因為情況尷尬,沒辦法實作附上截圖
有機會的話之後會補上


上一篇
利用 IaC 來進行 Hardening 安全強化
下一篇
容器安全:CIS Docker Benchmark 實踐
系列文
一個人的藍隊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言